A virtual machine (VM) may be a software implementation of a computer that executes programs like a physical computer. Virtual machines may be separated into two general categories, based on their use and degree of correspondence to any real machine. A system virtual machine may provide a complete system platform which supports the execution of a complete operating system (OS). A process virtual machine may be designed to run a single program, which means that it supports a single process. One characteristic of a virtual machine may be that the software running inside operates on the resources and abstractions provided by the virtual machine.